iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
1
Mobile Development

如何用 Laravel 撰寫難以維護的專案系列 第 14

[Day 14] 再看看商業邏輯!如何設置難以維護的共用程式碼

  • 分享至 

  • xImage
  •  

複雜的商業邏輯,通常會有很多的共用程式碼,來提高商業邏輯的可讀性和可修改度。

今天,我們從共用程式碼的角度,來看看怎麼寫出讓專案難以維護的程式碼。

不共用程式碼

首先,最簡單的做法,就是不共用程式碼。

在不同的地方重複寫一模一樣的邏輯,這樣一旦共用邏輯需要修改的話,就必須修改每個寫的地方。

搭配上之前說過的技巧,比方說一個函式要幾千行起跳,這可以讓維運的工程看到時,直接舉起雙手投降!

共用程式碼不拆 Service

Laravel 針對減少物件之間的依賴,有著很不錯的依賴注入設計,用的好的話,可以避免掉類別之間互相依賴的問題。

如果我們對共用的程式碼,不透過拆分 service 然後依賴注入的方式設計,而是用 private method 的方法處理拆分,那麼我們就可以保證這段邏輯很難離開這個類別,進而保證了這段共用邏輯的難以維護。

Contextual Binding

Contextual Binding 是 Laravel 提供的一個 utility,可以在不同的 Controller 內,即使在建構子裡面宣告一樣的界面,實際拿到的是不一樣的實體物件

$this->app->when(PhotoController::class)
          ->needs(Filesystem::class)
          ->give(function () {
              return Storage::disk('local');
          });

$this->app->when([VideoController::class, UploadController::class])
          ->needs(Filesystem::class)
          ->give(function () {
              return Storage::disk('s3');
          });

善加利用的話,可以讓之後維護的工程想破頭,也不知道為什麼一樣的宣告,可以拿到兩個不一樣的類別。


上一篇
[Day 13] 商業邏輯的拆分!如何撰寫難以維護的商業邏輯
下一篇
[Day 15] 聊難以維護商業邏輯的最後一天!
系列文
如何用 Laravel 撰寫難以維護的專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言